home *** CD-ROM | disk | FTP | other *** search
/ Scene Storm / Scene Storm - Volume 1.iso / coding / asm / games / mapscroller / maptest2.s < prev    next >
Text File  |  1980-01-03  |  17KB  |  432 lines

  1.     section    Framework,code
  2. ;    incdir    ff0:
  3.  
  4.     include includes:libraries/dos_lib.i
  5.     include    includes:exec/exec_lib.i
  6.     include    includes:hardware/custom.i
  7.  
  8. Music            equ    1
  9. mapwidth        equ    200    ;200 blocks in the x map
  10. numobjects        equ    20
  11. Hardware        equ    $dff000
  12. SystemCopper1        equ    $26
  13. SystemCopper2        equ    $32
  14. PortA            equ    $bfe001
  15. ICRA            equ    $bfed01
  16.  
  17. LeftMouse        equ    6
  18. levelcols        equ    32
  19. panelcols        equ    16    ;16 colours for the panel
  20.  
  21. FWidth            equ    92    ;92  bytes wide
  22. ScreenHeight        equ    192    ;playing area 192 lines high (12 blocks)
  23. NumberPlanes        equ    5*1    ;3 planes in each playfield
  24.  
  25. BytesPerForePlane    equ    fwidth*ScreenHeight
  26. ForegroundMemory    equ    NumberPlanes*BytesPerForePlane
  27. MemNeeded        equ    ForegroundMemory
  28.  
  29. BWAIT        MACRO
  30. \@wot:        btst    #14,2(a6)
  31.         bne.s    \@wot
  32.         ENDM    
  33.  
  34. ANIMATE:    MACRO
  35.         dc.l    \1
  36.         dc.w    \2,\3,\4,\5
  37.         endm
  38.  
  39. DEFINE_TRIG:    MACRO
  40.         dc.w    \1,\2,\3
  41.         dc.l    \4
  42.         endm
  43.  
  44. *****************************************************************************
  45. start:    lea    GraphicsName,a1        ;open the graphics library purely
  46.     move.l    (4).w,a6        ;to find the system copper
  47.     jsr    _LVOOldOpenLibrary(a6)
  48.     move.l    d0,GraphicsBase
  49.     lea    (Hardware).l,a6        ;$dff000 base hardware in a6
  50.     bsr    TakeSystem        ;kill this shitty amiga OS
  51.  
  52.     lea    variables(pc),a5    ;a5 is the variables pointer
  53.     lea    main_screen(a5),a0
  54.     move.l    #Mem,d0
  55.     move.l    d0,MemBase
  56.     move.l    d0,(a0)+        ;address of bitplane (1)
  57.     move.l    d0,maintopleft        ;address of bitplane (1)
  58.     add.l    #BytesPerForePlane,d0
  59.     move.l    d0,(a0)+        ;address of bitplane (2)    
  60.     add.l    #BytesPerForePlane,d0
  61.     move.l    d0,(a0)+        ;address of bitplane (3)
  62.     add.l    #BytesPerForePlane,d0
  63.     move.l    d0,(a0)+        ;address of bitplane (4)
  64.     add.l    #BytesPerForePlane,d0
  65.     move.l    d0,(a0)+        ;address of bitplane (5)
  66.  
  67.     move.l    #clist,cop1lc(a6)
  68.     move.w    #$87e0,dmacon(a6)    ;enable copper,sprite,blitter
  69.     move.w    #$7fff,intreq(a6)    ;clear all int request flags
  70.  
  71. ***************************************************************************
  72.     move.l    #-1,bltafwm(a6)        ;custom chips
  73.  
  74. ;copy the level blocks colours into the copperlist
  75. ;-------------------------------------------------
  76.     lea    blocks,a0        ;copy the level colours into the
  77.     lea    levelpallette,a1    ;copperlist
  78.     move.w    #levelcols-1,d0        ;number of colours to copy 
  79. .copy    move.w    (a0)+,2(a1)
  80.     addq    #4,a1
  81.     dbf    d0,.copy
  82.  
  83.     jsr    initscreen        ;initialise the 1st screen displayed
  84.  
  85.     Bwait
  86.  
  87. ***************************************************************************
  88.     lea    map+12*22*2+32,a0    ;skip all the mapper headers n stuff
  89.     move.l    a0,fgndpointer(a5)    ;set up the map index
  90.     move.l    a0,fgndpointer2(a5)    ;set up the map index
  91.     move.l    a0,fgndpointer3(a5)    ;set up the map index
  92.     
  93.     move.w    #24,pf2count(a5)    ;width of the background in words
  94.     move.w    #15,pf2scroll(a5)
  95.  
  96.     lea    scroll.value,a0
  97.     move.w    #$ff,2(a0)
  98.  
  99.     lea    main_screen(a5),a0
  100.     lea    copperlist,a1
  101.     
  102.     move.w    (a0),2(a1)        ;adr of bpl (1) hi into $00e0
  103.     move.w    2(a0),6(a1)        ;adr of bpl (1) lo into $00e2
  104.     
  105.     move.w    4(a0),10(a1)        ;adr of bpl (2) hi into $00e4
  106.     move.w    6(a0),14(a1)        ;adr of bpl (2) lo into $00e6
  107.     
  108.     move.w    8(a0),18(a1)        ;adr of bpl (3) hi into $00e8
  109.     move.w    10(a0),22(a1)        ;adr of bpl (3) lo into $00ea
  110.  
  111.     move.w    12(a0),26(a1)        ;adr of bpl (4) hi into $00ec
  112.     move.w    14(a0),30(a1)        ;adr of bpl (4) lo into $00ee
  113.  
  114.     move.w    16(a0),34(a1)        ;adr of bpl (5) hi into $00f0
  115.     move.w    18(a0),38(a1)        ;adr of bpl (5) lo into $00f2
  116.  
  117.     clr.w    scrolledge
  118.     clr.w    window_xpos
  119.     
  120. ***************************************************************************
  121. * Main game loop with the routines we are yet to cover commented out
  122. ***************************************************************************
  123. vloop:    cmp.b    #255,$dff006
  124.     bne    vloop        ;alternate every frame
  125.  
  126.     btst    #LeftMouse,PortA    ;lest mouse button to exit
  127.     bne    vloop
  128.     jmp    finished
  129.  
  130. **************************************************************************
  131.  
  132.         rsreset
  133. screen.num    RS.B    1    
  134. vcount        RS.B    1    ;vertcal blank counter
  135. pf1count    RS.W    1    ;number of background words to scroll
  136. pf2count    RS.W    1    ;number of foreground words to scroll
  137. pf1scroll    RS.W    1    ;pixel scroll value (0-15) background
  138. pf2scroll    RS.W    1    ;pixel scroll value (0-15) foreground
  139. pf1scroll2    RS.W    1
  140. pf2offset    RS.W    1
  141. screenend    RS.W    1
  142. level.end    RS.W    1
  143. level.number    RS.W    1
  144. fgndpointer    RS.L    1    ;foreground map pointer
  145. fgndpointer2    RS.L    1    ;foreground map pointer
  146. fgndpointer3    RS.L    1    ;foreground map pointer
  147.  
  148. main_screen     RS.L    9    ;
  149. screen_2    RS.L    9    ;
  150. screen_3    RS.L    9    ;spare screen for restoration of the gfx
  151.  
  152. vars.length    RS.B    0
  153. variables    DS.B    vars.length
  154.  
  155. ***************************************************************************
  156. TakeSystem:
  157.     move.w    intenar(a6),SystemInts        save system interupts
  158.     move.w    dmaconr(a6),SystemDMA        and DMA settings
  159.     move.w    #$7fff,intena(a6)        kill everything!
  160.     move.w    #$7fff,dmacon(a6)
  161.     move.b    #%01111111,ICRA            kill keyboard
  162.     move.l    $68,Level2Vector        save these interrupt vectors
  163.     move.l    $6c,Level3Vector        as we will use our own 
  164.     rts                    keyboard & vblank routines
  165.  
  166.  
  167. finished:
  168.     bsr    FreeSystem
  169.  
  170.     move.l    4.w,a6
  171.     move.l    GraphicsBase,a1    
  172.     jsr    _LVOCloseLibrary(a6)
  173.     clr.l    d0            ;stop that dos return error?
  174.     rts
  175.  
  176. FreeSystem:
  177.     move.l    Level2Vector,$68    restore the system vectors
  178.     move.l    Level3Vector,$6c        and interrupts and DMA
  179.     move.l    GraphicsBase,a1            and replace the system
  180.     move.l    SystemCopper1(a1),Hardware+cop1lc    copper list
  181.     move.l    SystemCopper2(a1),Hardware+cop2lc
  182.     move.w    SystemInts,d0
  183.     or.w    #$c000,d0
  184.     move.w    d0,intena(a6)
  185.     move.w    SystemDMA,d0
  186.     or.w    #$8100,d0
  187.     move.w    d0,dmacon(a6)
  188.     move.b    #%10011011,ICRA    keyboard etc back on
  189.     rts
  190.  
  191. *******************************************************************************
  192. Level2Vector        dc.l    0
  193. Level3Vector        dc.l    0
  194. SystemInts        dc.w    0
  195. SystemDMA        dc.w    0
  196. MemBase            dc.l    0
  197. DOSBase            dc.l    0
  198. GraphicsBase        dc.l    0
  199.             even
  200. scrolledge:        dc.w    0
  201.             even
  202. GraphicsName        dc.b    'graphics.library',0
  203.             even
  204. DOSName            dc.b    'dos.library',0
  205.             even
  206.  
  207. standingblock:        dc.w    0        ;0 to 65535 blocks
  208.             even
  209. window_xpos        dc.w    0
  210.             even
  211. scrollspeed        dc.w    1
  212.             even
  213. maintopleft        dc.l    0    ;address of the main screen in ram
  214.             even
  215.  
  216. sparetopleft        dc.l    0    ;address of the d//b screen in ram
  217.             even
  218.  
  219. bodgeit:        dc.w    0
  220.  
  221. ship_screenx        dc.b    0
  222.             even
  223.  
  224. bpl1main        dc.l    0
  225. bpl2main        dc.l    0
  226. bpl3main        dc.l    0
  227. bpl4main        dc.l    0
  228. bpl5main        dc.l    0
  229.             even
  230.  
  231. bpl1spare        dc.l    0
  232. bpl2spare        dc.l    0
  233. bpl3spare        dc.l    0
  234. bpl4spare        dc.l    0
  235. bpl5spare        dc.l    0
  236.             even
  237. screen_flip:        dc.b    0
  238.             even
  239. gamestart_timer:    dc.w    100
  240.             even
  241.  
  242.  
  243. *****************************************************************************
  244. initscreen:    move.w    #$09f0,bltcon0(a6)        minterm for D = A
  245.         clr.w    bltcon1(a6)
  246.         move.w    #38,bltamod(a6)
  247.         move.w    #fwidth-2,bltdmod(a6)
  248.         Bwait
  249.  
  250.         lea    map+32,a0
  251.         lea    offsetab,a2
  252.         lea    putdowntab,a3
  253.         move.w    #12*22-1,d7        ;12 down ,22 columns across 
  254.  
  255. scrloop:    move.w    (a0)+,d0        ;block number in the map
  256.         add.w    d0,d0            ;x2 (index words)
  257.         lea    blocks+32*2,a1        ;+64 to skip 32 cols pallette info.
  258.         add.w    (a2,d0.w),a1        ;a1=addr of block to blit
  259.         move.w    (a3)+,d6        ;next screen addr to plot block
  260.  
  261.         lea    main_screen(a5),a4    ;get the current foreground
  262.  
  263. Plane1:        move.l    (a4)+,d1        ;address of bitplane 1 in d1
  264.         add.l    d6,d1            ;add d6-(block putdown offset)
  265.         move.l    d1,bltdpt(a6)        ;blit a 16x16 pixel block
  266.         move.l    a1,bltapt(a6)        ;into the foreground screen
  267.         move.w    #16*64+1,bltsize(a6)
  268.         bwait
  269.  
  270. Plane2:        move.l    (a4)+,d2        ;address of bitplane 2 in d2
  271.         add.l    d6,d2            ;add d6-(block putdown offset)
  272.         move.l    d2,bltdpt(a6)
  273.         lea    40*256(a1),a1
  274.         move.l    a1,bltapt(a6)
  275.         move.w    #16*64+1,bltsize(a6)
  276.         bwait
  277.     
  278. Plane3:        move.l    (a4)+,d3        ;address of bitplane 3 in d3
  279.         add.l    d6,d3            ;add d6-(block putdown offset)
  280.         move.l    d3,bltdpt(a6)
  281.         lea    40*256(a1),a1
  282.         move.l    a1,bltapt(a6)
  283.         move.w    #16*64+1,bltsize(a6)
  284.         bwait
  285.  
  286. Plane4:        move.l    (a4)+,d4        ;address of bitplane 4 in d3
  287.         add.l    d6,d4            ;add d6-(block putdown offset)
  288.         move.l    d4,bltdpt(a6)
  289.         lea    40*256(a1),a1
  290.         move.l    a1,bltapt(a6)
  291.         move.w    #16*64+1,bltsize(a6)
  292.         bwait
  293.  
  294. Plane5:        move.l    (a4)+,d5        ;address of bitplane 4 in d3
  295.         add.l    d6,d5            ;add d6-(block putdown offset)
  296.         move.l    d5,bltdpt(a6)
  297.         lea    40*256(a1),a1
  298.         move.l    a1,bltapt(a6)
  299.         move.w    #16*64+1,bltsize(a6)
  300.         bwait
  301.  
  302.         dbf    d7,scrloop
  303.         rts
  304.  
  305.     
  306. putdowntab:
  307.     dc.w    000*fwidth+00,016*fwidth+00,032*fwidth+00,048*fwidth+00,064*fwidth+00,080*fwidth+00,096*fwidth+00,112*fwidth+00,128*fwidth+00,144*fwidth+00,160*fwidth+00,176*fwidth+00
  308.     dc.w    000*fwidth+02,016*fwidth+02,032*fwidth+02,048*fwidth+02,064*fwidth+02,080*fwidth+02,096*fwidth+02,112*fwidth+02,128*fwidth+02,144*fwidth+02,160*fwidth+02,176*fwidth+02
  309.     dc.w    000*fwidth+04,016*fwidth+04,032*fwidth+04,048*fwidth+04,064*fwidth+04,080*fwidth+04,096*fwidth+04,112*fwidth+04,128*fwidth+04,144*fwidth+04,160*fwidth+04,176*fwidth+04
  310.     dc.w    000*fwidth+06,016*fwidth+06,032*fwidth+06,048*fwidth+06,064*fwidth+06,080*fwidth+06,096*fwidth+06,112*fwidth+06,128*fwidth+06,144*fwidth+06,160*fwidth+06,176*fwidth+06
  311.     dc.w    000*fwidth+08,016*fwidth+08,032*fwidth+08,048*fwidth+08,064*fwidth+08,080*fwidth+08,096*fwidth+08,112*fwidth+08,128*fwidth+08,144*fwidth+08,160*fwidth+08,176*fwidth+08
  312.     dc.w    000*fwidth+10,016*fwidth+10,032*fwidth+10,048*fwidth+10,064*fwidth+10,080*fwidth+10,096*fwidth+10,112*fwidth+10,128*fwidth+10,144*fwidth+10,160*fwidth+10,176*fwidth+10
  313.     dc.w    000*fwidth+12,016*fwidth+12,032*fwidth+12,048*fwidth+12,064*fwidth+12,080*fwidth+12,096*fwidth+12,112*fwidth+12,128*fwidth+12,144*fwidth+12,160*fwidth+12,176*fwidth+12
  314.     dc.w    000*fwidth+14,016*fwidth+14,032*fwidth+14,048*fwidth+14,064*fwidth+14,080*fwidth+14,096*fwidth+14,112*fwidth+14,128*fwidth+14,144*fwidth+14,160*fwidth+14,176*fwidth+14
  315.     dc.w    000*fwidth+16,016*fwidth+16,032*fwidth+16,048*fwidth+16,064*fwidth+16,080*fwidth+16,096*fwidth+16,112*fwidth+16,128*fwidth+16,144*fwidth+16,160*fwidth+16,176*fwidth+16
  316.     dc.w    000*fwidth+18,016*fwidth+18,032*fwidth+18,048*fwidth+18,064*fwidth+18,080*fwidth+18,096*fwidth+18,112*fwidth+18,128*fwidth+18,144*fwidth+18,160*fwidth+18,176*fwidth+18
  317.     dc.w    000*fwidth+20,016*fwidth+20,032*fwidth+20,048*fwidth+20,064*fwidth+20,080*fwidth+20,096*fwidth+20,112*fwidth+20,128*fwidth+20,144*fwidth+20,160*fwidth+20,176*fwidth+20
  318.     dc.w    000*fwidth+22,016*fwidth+22,032*fwidth+22,048*fwidth+22,064*fwidth+22,080*fwidth+22,096*fwidth+22,112*fwidth+22,128*fwidth+22,144*fwidth+22,160*fwidth+22,176*fwidth+22
  319.     dc.w    000*fwidth+24,016*fwidth+24,032*fwidth+24,048*fwidth+24,064*fwidth+24,080*fwidth+24,096*fwidth+24,112*fwidth+24,128*fwidth+24,144*fwidth+24,160*fwidth+24,176*fwidth+24
  320.     dc.w    000*fwidth+26,016*fwidth+26,032*fwidth+26,048*fwidth+26,064*fwidth+26,080*fwidth+26,096*fwidth+26,112*fwidth+26,128*fwidth+26,144*fwidth+26,160*fwidth+26,176*fwidth+26
  321.     dc.w    000*fwidth+28,016*fwidth+28,032*fwidth+28,048*fwidth+28,064*fwidth+28,080*fwidth+28,096*fwidth+28,112*fwidth+28,128*fwidth+28,144*fwidth+28,160*fwidth+28,176*fwidth+28
  322.     dc.w    000*fwidth+30,016*fwidth+30,032*fwidth+30,048*fwidth+30,064*fwidth+30,080*fwidth+30,096*fwidth+30,112*fwidth+30,128*fwidth+30,144*fwidth+30,160*fwidth+30,176*fwidth+30
  323.     dc.w    000*fwidth+32,016*fwidth+32,032*fwidth+32,048*fwidth+32,064*fwidth+32,080*fwidth+32,096*fwidth+32,112*fwidth+32,128*fwidth+32,144*fwidth+32,160*fwidth+32,176*fwidth+32
  324.     dc.w    000*fwidth+34,016*fwidth+34,032*fwidth+34,048*fwidth+34,064*fwidth+34,080*fwidth+34,096*fwidth+34,112*fwidth+34,128*fwidth+34,144*fwidth+34,160*fwidth+34,176*fwidth+34
  325.     dc.w    000*fwidth+36,016*fwidth+36,032*fwidth+36,048*fwidth+36,064*fwidth+36,080*fwidth+36,096*fwidth+36,112*fwidth+36,128*fwidth+36,144*fwidth+36,160*fwidth+36,176*fwidth+36
  326.     dc.w    000*fwidth+38,016*fwidth+38,032*fwidth+38,048*fwidth+38,064*fwidth+38,080*fwidth+38,096*fwidth+38,112*fwidth+38,128*fwidth+38,144*fwidth+38,160*fwidth+38,176*fwidth+38
  327.     dc.w    000*fwidth+40,016*fwidth+40,032*fwidth+40,048*fwidth+40,064*fwidth+40,080*fwidth+40,096*fwidth+40,112*fwidth+40,128*fwidth+40,144*fwidth+40,160*fwidth+40,176*fwidth+40
  328.     dc.w    000*fwidth+42,016*fwidth+42,032*fwidth+42,048*fwidth+42,064*fwidth+42,080*fwidth+42,096*fwidth+42,112*fwidth+42,128*fwidth+42,144*fwidth+42,160*fwidth+42,176*fwidth+42
  329.     even
  330.     
  331.  
  332. ****************************************************************************
  333. * THE SPRITE DATA GOES HERE FOR THE HERO (MAIN CHARACTER ONLY)             *
  334. ****************************************************************************
  335.     Section    ChipMust,Code_C        ;nice one Vinh (nice and neat!)
  336.  
  337. **************************************************************************
  338. clist:        dc.w    $0108,$0000,$010a,$0000
  339.  
  340. copperlist:    DC.W    $00e0,$0000,$00e2,$0000
  341.         DC.W    $00e4,$0000,$00e6,$0000
  342.         DC.W    $00e8,$0000,$00ea,$0000
  343.         DC.W    $00ec,$0000,$00ee,$0000
  344.         DC.W    $00f0,$0000,$00f2,$0000
  345.         DC.W    $00f4,$0000,$00f6,$0000
  346.         DC.W    bplcon0,$5200
  347.  
  348. scroll.value    DC.W    bplcon1,$0000,bpl1mod,$002e
  349.         DC.W    bpl2mod,$002e,bplcon2,$0024
  350.         DC.W    ddfstrt,$0028,ddfstop,$00D8
  351.         DC.W    diwstrt,$2c71,diwstop,$2CD1
  352.         dc.w    $01fc,0,$10c,0
  353.  
  354. levelpallette:    DC.W    $0180,$0000,$0182,$0000,$0184,$0000,$0186,$0000
  355.         DC.W    $0188,$0000,$018A,$0000,$018C,$0000,$018E,$0000
  356.         DC.W    $0190,$0000,$0192,$0000,$0194,$0000,$0196,$0000
  357.         DC.W    $0198,$0000,$019A,$0000,$019C,$0000,$019E,$0000
  358.  
  359.         dc.w    $01a0,$0000
  360.         dc.w    $01a2,$0FFF
  361.         dc.w    $01a4,$0DDD
  362.         dc.w    $01a6,$0AAA
  363.         dc.w    $01a8,$0888
  364.         dc.w    $01aA,$0555
  365.         dc.w    $01aC,$0222
  366.         dc.w    $01aE,$0000
  367.         dc.w    $01b0,$000A
  368.         dc.w    $01b2,$024A
  369.         dc.w    $01b4,$044F
  370.         dc.w    $01b6,$076F
  371.         dc.w    $01b8,$000A
  372.         dc.w    $01bA,$000A
  373.         dc.w    $01bC,$000A
  374.         dc.w    $01bE,$0F00
  375.     
  376. sprite0ptr:    DC.W    sprpt+0,$0000,sprpt+2,$0000
  377. sprite1ptr:    DC.W    sprpt+4,$0000,sprpt+6,$0000
  378. sprite2ptr:    DC.W    sprpt+8,$0000,sprpt+10,$0000
  379. sprite3ptr    DC.W    sprpt+12,$0000,sprpt+14,$0000
  380.         DC.W    sprpt+16,$0000,sprpt+18,$0000
  381.         DC.W    sprpt+20,$0000,sprpt+22,$0000
  382.         DC.W    sprpt+24,$0000,sprpt+26,$0000
  383.         DC.W    sprpt+28,$0000,sprpt+30,$0000
  384.  
  385.         dc.w    $EA09,-2,$0100,$0200         ;panel start pos
  386.         dc.w    ddfstrt,$0038,ddfstop,$00D0
  387.         dc.w    $0108,$0000,$010a,$0000
  388.  
  389.         DC.W    bplcon1,$0000
  390. panelplanes:    DC.W    $00E0,$0000,$00E2,$0000
  391.         DC.W    $00E4,$0000,$00E6,$0000
  392.         DC.W    $00E8,$0000,$00EA,$0000
  393.         DC.W    $00EC,$0000,$00EE,$0000
  394.         dc.w    $0100,$0200
  395.  
  396. panelpallette:    dc.w    $0180,$0000,$0182,$0000,$0184,$0000,$0186,$0000
  397.         dc.w    $0188,$0000,$018a,$0000,$018c,$0000,$018e,$0000
  398.         dc.w    $0190,$0000,$0192,$0000,$0194,$0000,$0196,$0000
  399.         dc.w    $0198,$0000,$019a,$0000,$019c,$0000,$019e,$0000
  400.         dc.w    $01a0,$0000,$01a2,$0000,$01a4,$0000,$01a6,$0000
  401.         dc.w    $01a8,$0000,$01aa,$0000,$01ac,$0000,$01ae,$0000
  402.         dc.w    $01b0,$0000,$01b2,$0000,$01b4,$0000,$01b6,$0000
  403.         dc.w    $01b8,$0000,$01ba,$0000,$01bc,$0000,$01be,$0000
  404.         
  405.         DC.W    $FFE1,$FFfe
  406.  
  407.         DC.W    $FFFF,$FFFE
  408.         even        
  409.  
  410. map:        incbin    miscsource:lv1.map
  411. blocks        incbin    miscsource:paroblocks.bin
  412.  
  413. offsetab:
  414.  dc.w 00*40+0,00*40+2,00*40+4,00*40+6,00*40+8,00*40+10,00*40+12,00*40+14,00*40+16,00*40+18,00*40+20,00*40+22,00*40+24,00*40+26,00*40+28,00*40+30,00*40+32,00*40+34,00*40+36,00*40+38
  415.  dc.w 16*40+0,16*40+2,16*40+4,16*40+6,16*40+8,16*40+10,16*40+12,16*40+14,16*40+16,16*40+18,16*40+20,16*40+22,16*40+24,16*40+26,16*40+28,16*40+30,16*40+32,16*40+34,16*40+36,16*40+38
  416.  dc.w 32*40+0,32*40+2,32*40+4,32*40+6,32*40+8,32*40+10,32*40+12,32*40+14,32*40+16,32*40+18,32*40+20,32*40+22,32*40+24,32*40+26,32*40+28,32*40+30,32*40+32,32*40+34,32*40+36,32*40+38
  417.  dc.w 48*40+0,48*40+2,48*40+4,48*40+6,48*40+8,48*40+10,48*40+12,48*40+14,48*40+16,48*40+18,48*40+20,48*40+22,48*40+24,48*40+26,48*40+28,48*40+30,48*40+32,48*40+34,48*40+36,48*40+38
  418.  dc.w 64*40+0,64*40+2,64*40+4,64*40+6,64*40+8,64*40+10,64*40+12,64*40+14,64*40+16,64*40+18,64*40+20,64*40+22,64*40+24,64*40+26,64*40+28,64*40+30,64*40+32,64*40+34,64*40+36,64*40+38
  419.  dc.w 80*40+0,80*40+2,80*40+4,80*40+6,80*40+8,80*40+10,80*40+12,80*40+14,80*40+16,80*40+18,80*40+20,80*40+22,80*40+24,80*40+26,80*40+28,80*40+30,80*40+32,80*40+34,80*40+36,80*40+38
  420.  dc.w 96*40+0,96*40+2,96*40+4,96*40+6,96*40+8,96*40+10,96*40+12,96*40+14,96*40+16,96*40+18,96*40+20,96*40+22,96*40+24,96*40+26,96*40+28,96*40+30,96*40+32,96*40+34,96*40+36,96*40+38
  421.  dc.w 112*40+0,112*40+2,112*40+4,112*40+6,112*40+8,112*40+10,112*40+12,112*40+14,112*40+16,112*40+18,112*40+20,112*40+22,112*40+24,112*40+26,112*40+28,112*40+30,112*40+32,112*40+34,112*40+36,112*40+38
  422.  dc.w 128*40+0,128*40+2,128*40+4,128*40+6,128*40+8,128*40+10,128*40+12,128*40+14,128*40+16,128*40+18,128*40+20,128*40+22,128*40+24,128*40+26,128*40+28,128*40+30,128*40+32,128*40+34,128*40+36,128*40+38
  423.  dc.w 144*40+0,144*40+2,144*40+4,144*40+6,144*40+8,144*40+10,144*40+12,144*40+14,144*40+16,144*40+18,144*40+20,144*40+22,144*40+24,144*40+26,144*40+28,144*40+30,144*40+32,144*40+34,144*40+36,144*40+38
  424.  dc.w 160*40+0,160*40+2,160*40+4,160*40+6,160*40+8,160*40+10,160*40+12,160*40+14,160*40+16,160*40+18,160*40+20,160*40+22,160*40+24,160*40+26,160*40+28,160*40+30,160*40+32,160*40+34,160*40+36,160*40+38
  425.  dc.w 176*40+0,176*40+2,176*40+4,176*40+6,176*40+8,176*40+10,176*40+12,176*40+14,176*40+16,176*40+18,176*40+20,176*40+22,176*40+24,176*40+26,176*40+28,176*40+30,176*40+32,176*40+34,176*40+36,176*40+38
  426.  even
  427.  
  428.  
  429.         section    membss,code_c
  430.  
  431. Mem        ds.b    memneeded
  432.